본 게시글의 원문은 Yann Debray의 MATLAB with Python Book 입니다. 해당 책은 MIT 라이센스를 따르기 때문에 개인적으로 번역하여 재배포 합니다. 본 포스팅에는 추후 유료 수익을 위한 광고가 부착될 수도 있습니다.

MIT License

Copyright (c) 2023 Yann Debray

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

본 게시물에서 활용된 소스 코드들은 모두 Yann Debray의 GitHub Repo에서 확인할 수 있습니다.

2.2. Python에서 MATLAB 호출하기

이제 주피터 노트북을 사용하여 Python에서 MATLAB을 호출하는 방법을 보여드리겠습니다.

첫 번째 단계는 엔진 API를 사용하여 Python과 통신할 MATLAB을 백그라운드에서 실행하는 것입니다. (이미 설치했다고 가정하겠습니다 - 그렇지 않으면 3.8 섹션을 확인하세요).

>>> import matlab.engine
>>> m = matlab.engine.start_matlab()

MATLAB이 실행되면 경로에 있는 모든 MATLAB 함수를 호출할 수 있습니다.

>>> m.sqrt(42.0)
6.48074069840786

텍스트 파일에서 키에 액세스해야 합니다.

>>> with open("accessKey.txt") as f:
...   apikey = f.read()

이제 MATLAB의 get_current_weather 및 parse_current_json 함수를 MATLAB에서와 마찬가지로 사용하여 현재 날씨 조건을 가져올 수 있습니다.

>>> import weather
>>> json_data = weather.get_current_weather("Boston","US",apikey)
>>> data = weather.parse_current_json(json_data)
>>> data
{'temp': 62.64, 'feels_like': 61.9, 'temp_min': 58.57, 'temp_max': 65.08, 'pressure': 1018, 'humidity': 70, 'speed': 15.01, 'deg': 335, 'gust': 32.01, 'lon': -71.0598, 'lat': 42.3584, 'city': 'Boston', 'current_time': '2022-05-23 11:28:54.833306'}

그런 다음 MATLAB 함수 predictAirQuality를 호출하여 예측 결과를 얻을 수 있습니다.

>>> aq = m.predictAirQuality(data)
>>> aq
Good

마지막 단계는 노트북 시작 시 엔진 API에 의해 시작된 MATLAB을 종료하는 것입니다.

>>> m.exit()

그러나 Python 동료가 MATLAB에 액세스할 수 없을 수도 있습니다. 다음 두 섹션은 이러한 사용 사례를 대상으로 합니다.